package com.ygqh.baby.service.task;

import com.ygqh.baby.ao.TaskMethod;
import com.ygqh.baby.model.MonitorResult;

import java.util.Date;
import java.util.List;

public interface YgMonitoringService {

    /**
     * 系统监控 <br/>
     * 1.监控现有定时任务执行情况 <br/>
     * 2.用户新增情况 （是否持续新增）<br/>
     * 3.订单支付情况 <br/>
     * 4.短信发送是否正常（主要是盗刷问题） <br/>
     * 5.同步库存监控 <br/>
     * 6.返利监控 <br/>
     *
     * @param 入参
     * @return void 返回类型
     * @throws
     * @Title: monitoringSystem
     * @author （guohao）
     * @date 2017年8月14日 上午10:02:41
     * @version V1.0
     */
    void monitoringSystem();

    /**
     * 监控定时任务
     *
     * @param taskList
     * @param currentTime
     * @return MonitorResult 返回类型
     * @throws
     * @Title: monitoringScheduledJobs
     * @author （guohao）
     * @date 2017年8月14日 下午4:33:31
     * @version V1.0
     */
    MonitorResult monitoringScheduledJobs(TaskMethod[] taskList, Date currentTime);

    /**
     * 监控用户新增情况
     *
     * @param currentTime 入参
     * @return MonitorResult 返回类型
     * @throws
     * @Title: monitoringUser
     * @author （guohao）
     * @date 2017年8月14日 下午7:06:52
     * @version V1.0
     */
    MonitorResult monitoringUser(Date currentTime);

    /**
     * 监控订单支付
     *
     * @param currentTime 入参
     * @return MonitorResult 返回类型
     * @throws
     * @Title: monitoringOrder
     * @author （guohao）
     * @date 2017年8月14日 下午7:07:26
     * @version V1.0
     */
    MonitorResult monitoringOrder(Date currentTime);

    /**
     * 监控短息发送
     *
     * @param currentTime 入参
     * @return MonitorResult 返回类型
     * @throws
     * @Title: monitoringSMS
     * @author （guohao）
     * @date 2017年8月14日 下午7:07:48
     * @version V1.0
     */
    MonitorResult monitoringSMS(Date currentTime);

    /**
     * 监控库存同步
     *
     * @param currentTime 入参
     * @return MonitorResult 返回类型
     * @throws
     * @Title: monitoringStock
     * @author （guohao）
     * @date 2017年8月14日 下午7:08:13
     * @version V1.0
     */
    MonitorResult monitoringStock(Date currentTime);

    /**
     * 监控返利差异
     *
     * @param 入参
     * @return MonitorResult 返回类型
     * @throws
     * @Title: monitoringBalance
     * @author （guohao）
     * @date 2017年8月14日 下午7:08:59
     * @version V1.0
     */
    MonitorResult monitoringBalance(Date currentDate);

    void sendMallAndSms(List<MonitorResult> results, Boolean sendSms);

    /**
     * 将用户订单的物流信息发到某一邮箱
     *
     * @param userId
     * @param to     入参
     * @return void 返回类型
     * @throws
     * @Title: sendMallWithOrderExpress
     * @author （guohao）
     * @date 2017年8月22日 下午5:04:31
     * @version V1.0
     */
    void sendMallWithOrderExpress(Long userId, String to);

    /**
     * 发送负库存商品给客服
     *
     * @param 入参
     * @return void 返回类型
     * @throws
     * @Title: checkStock
     * @author （guohao）
     * @date 2017年9月27日 下午3:40:09
     * @version V1.0
     */
    void checkStock();

    /**
     * 监控促销标签定时任务是否有漏的
     */
    void checkPromotionTags();

}